import fitz  # PyMuPDF
from docx import Document
from docx.shared import Inches
import io
from PIL import Image  # 使用 Pillow

def pdf_to_doc(input_pdf_path, output_doc_path):
    # 打开PDF文件
    pdf_document = fitz.open(input_pdf_path)
    # 创建一个新的Word文档
    doc = Document()

    # 遍历每一页
    for page_num in range(len(pdf_document)):
        page = pdf_document.load_page(page_num)  # 加载页面
        text = page.get_text("text")  # 提取文本

        # 将提取的文本添加到Word文档中
        doc.add_paragraph(text)

        # 提取图像
        for img in page.get_images(full=True):
            xref = img[0]
            base_image = pdf_document.extract_image(xref)
            image_bytes = base_image["image"]
            image_ext = base_image["ext"]

            # 将图像数据转换为PIL图像对象
            image = Image.open(io.BytesIO(image_bytes))

            # 将PIL图像对象保存为临时文件
            temp_image_path = f"temp_image.{image_ext}"
            image.save(temp_image_path)

            # 将图像插入到Word文档中
            doc.add_picture(temp_image_path, width=Inches(4))

    # 保存Word文档
    doc.save(output_doc_path)
    pdf_document.close()

# 使用方法
input_pdf_path = 'D:\\1.pdf'
output_doc_path = 'D:\\output.docx'
pdf_to_doc(input_pdf_path, output_doc_path)